# BGR/RGB 的颜色标准,以三种不同的颜色来描述一种纯色
# HSV 的颜色标注  H:(0-180) 色调  S:(0-100) 明暗程度  V:(0-100) 颜色的饱和度。
# S：颜色越暗则接近黑色  V: 颜色的饱和度越低就越接近白色
# 人类的颜色观感中，主要HSV作为观感模式
import cv2
import numpy as np

img = cv2.imread("./img/color_recognize3.png")
# 获取img的高和宽
h, w, _ = img.shape
# 将颜色从BGR转化为HSV
img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# 设置一个mask（掩膜区域）
mask = np.zeros((h, w), dtype=np.uint8)
# 获取红色像素的区域
for i in range(h):
    for j in range(w):
        # 获取一个像素的HSV的值
        h_val = img_hsv[i, j][0]
        s_val = img_hsv[i, j][1]
        v_val = img_hsv[i, j][2]
        # 判断红色
        # if (156 <= h_val <= 180 or 0 <= h_val <= 10) and 43 <= s_val <= 255 and 46 <= v_val <= 255:
        # 判断绿色
        if 35 <= h_val <= 77 and 43 <= s_val <= 255 and 46 <= v_val <= 255:
            mask[i, j] = 255

cv2.imshow("red_mask", mask)

# mask = cv2.merge([mask, mask, mask])

# 让掩膜与原图进行相交
# result = cv2.bitwise_and(img, mask)
# cv2.imshow("mask_img", result)
cv2.waitKey(0)
